package cn.wit.test;
/**
 * 找出重复的数字
 * 很理想，只适合已经排好序的情况
 * 对于没有排好序的情况（待解）
 * @author 16604
 *
 */
public class DemoFindDuplicateNumbers {
	public static void main(String[] args) {
		
		int[] nums= {1,2,3,4,6,6,6,8,9};
		
		System.out.println(findDuplicationNumebrs(nums));
	}
	
	public static boolean findDuplicationNumebrs(int[] nums) {
		
		int count = 0;

		for(int i =0;i<nums.length;i++) {
			count |= 1<<nums[i]-1;
		}

		//打印缺少的元素
		int temp;
		temp = count^(int)(Math.pow(2,9)-1);

		for(int i =0;i<nums.length;i++) {
			if(((temp>>i)&1)==1) {
				System.out.print("缺少的元素"+(i+1)+" ");
			}
		}

		return count == Math.pow(2, 9)-1;
	}
	
	//求二进制里面的最高位
	public static int lowbit(int x) {
		return x&(-x);
	}

}
